1. Field of the Invention
This invention relates to software object cloning and more particularly relates to software object clone event notification.
2. Description of the Related Art
Object oriented software development languages such as JAVA and C++ allow developers to create complex systems of software objects working together to perform specified tasks. Generally, object oriented programming simplifies many aspects of software development. However, in programs requiring multiple copies or clones of a primary software object difficulties may arise.
In such systems of software objects, communication of changes among the software objects is critical for accurate performance of software programs. For example, if a Graphical User Interface (GUI) object references data from a database, the GUI object must be notified of changes to the database to properly update displayed data. Most object-oriented software systems rely on an event-notification model to communicate changes between software objects. It is especially critical to quickly and accurately notify software objects of changes to other objects within systems that comprise multiple copies or clones of primary software objects.
One example of a system that comprises multiple clones of a primary software object is a multi-window GUI program for accessing data within a database. In this example, a metadata discovery tool may be used to discover metadata related to the data stored in the database. The metadata discovery tool may generate a metadata object which contains the metadata for attributes such as tables, columns, indexes and the like for the database. If multiple copies of the GUI, or windows within the GUI associated with the metadata object, are initiated, the metadata object may be cloned such that each GUI has its own view of the metadata. This avoids overhead in handling resource contention issues when two GUIs attempt to change the same metadata.
This example may be further complicated if one GUI modifies the metadata in the metadata object. In response to the change, the metadata discovery tool may modify or replace the original metadata object. Unfortunately, in typical systems, the clones of the original metadata object are not adequately notified of the change. Consequently, the GUIs may display erroneous or stale data.
Some attempted solutions to this notification deficiency include sweeping broadcasts of event information to objects within the system, or coordinated management of object notification by a separate notification manager. However, these solutions are not easily implemented, and may easily overwhelm system resources. For example, a general broadcast of each object notification may heavily increase system communication congestion. The resultant delays and system resource consumption may negatively impact software system performance. Implementation of a separate notification manager may require substantial development and testing time and money as well as increase hardware and software requirements.
One problem associated with clone notification occurs in situations where events on multiple primary objects need to be reflected in the clones of one of the primary objects. For example, if an order form object includes information from a product selection object and a billing information object, any changes to the product selection object and billing information object may likewise require representation on the order form object. If the order form object has multiple clones, each clone must also show the changes. In such an example, one way to update the clones is to create a direct link between each of the primary objects and each of the clones. In complex systems, this solution may not be reasonable, in part because such a solution may require modifying source code or scripts for every object in a system each time a new clone or primary object is created.
From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method for object clone event notification. Beneficially, such an apparatus, system, and method would notify object clones of changes within the software system without requiring resource intensive broadcasts, implementation of a separate notification manager, or multiple direct links between clones and various system objects.